package com.utooo.pojo.dto.purchase.contract;

import com.utooo.pojo.dto.common.CreateGroup;
import com.utooo.pojo.dto.purchase.DemandMaterialDetailDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * 采购合同管理
 *
 * @author CK
 * @date 2025-04-17 09:19:38
 */
@Data
public class PurchaseContractDTO {


    @NotBlank(groups = { CreateGroup.class }, message = "合同名称不能为空")
    @Schema(description = "合同名称:合同名称，必填，用于新增操作")
    private String title;

    @Schema(description = "合同编号")
    private String contractNo;

    @Schema(description = "供应商编码")
    private String supplierCode;

    @Schema(description = "供应商名称")
    private String supplierName;

    @Schema(description = "合同来源")
    private String source;

    @Schema(description = "公司")
    private String company;

    @Schema(description = "关联合同")
    private String relatedContract;

    @Schema(description = "合同类型")
    private String type;
    @Schema(description = "采购员")
    private String purchaser;
    @Schema(description = "合同总数量")
    private String totalQuantity;
    @Schema(description = "单据号")
    private String orderNo;
    @Schema(description = "申请人")
    private String applicant;
    @Schema(description = "验收类型")
    private String acceptanceType;
    @Schema(description = "价款类型")
    private String paymentType;
    @Schema(description = "含税金额")
    private BigDecimal totalPriceWithTax;

    @Schema(description = "来源单号")
    private String sourceNo;

    @Schema(description = "合同摘要")
    private String summary;


    @Schema(description = "合同签署甲方")
    private List<ContractPartyADTO> partyAList;

    @Schema(description = "合同签署乙方")
    private List<ContractPartyBDTO> partyBList;

    @Schema(description = "合同签署第三方")
    private List<ThirdPartyDTO> thirdPartyList;

    @Schema(description = "合同标的")
    private List<ContractObjectDTO> materialDetailList;

    @Schema(description = "合同约定阶段")
    private List<ContractAgreementsStageDTO> stageList;

    @Schema(description = "合同信息")
    private List<ContractAttachmentDTO> contractInfoList;
}
